home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 April: Mac OS SDK / Dev.CD Apr 96 SDK / Dev.CD Apr 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc Development Framework / ODFDev / ODF / OS / FWODUtil / Sources / FWAcquir.cpp next >
Encoding:
Text File  |  1995-11-08  |  25.2 KB  |  737 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWAcquir.cpp
  4. //    Release Version:    $ 1.0d11 $
  5. //
  6. //    Copyright:    © 1993, 1995 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "FWOS.hpp"
  11.  
  12. #ifndef FWACQUIR_H
  13. #include "FWAcquir.h"
  14. #endif
  15.  
  16. #ifndef FWMEMMGR_H
  17. #include "FWMemMgr.h"
  18. #endif
  19.  
  20. #ifndef SOM_ODWindow_xh
  21. #include "Window.xh"
  22. #endif
  23.  
  24. #ifndef SOM_ODFrame_xh
  25. #include "Frame.xh"
  26. #endif
  27.  
  28. #ifndef SOM_ODShape_xh
  29. #include <Shape.xh>
  30. #endif
  31.  
  32. #ifndef SOM_ODTransform_xh
  33. #include <Trnsform.xh>
  34. #endif
  35.  
  36. #ifndef SOM_ODStorageUnit_xh
  37. #include <StorageU.xh>
  38. #endif
  39.  
  40. #ifndef SOM_ODStorageUnitView_xh
  41. #include <SUView.xh>
  42. #endif
  43.  
  44. #ifndef SOM_ODStorageUnitCursor_xh
  45. #include <SUCursor.xh>
  46. #endif
  47.  
  48. #ifndef SOM_ODMenuBar_xh
  49. #include <MenuBar.xh>
  50. #endif
  51.  
  52. #ifndef SOM_ODPart_xh
  53. #include <Part.xh>
  54. #endif
  55.  
  56. //========================================================================================
  57. //    Runtime Informations
  58. //========================================================================================
  59.  
  60. #if FW_LIB_EXPORT_PRAGMAS
  61. #pragma lib_export on
  62. #endif
  63.  
  64. #ifdef FW_BUILD_MAC    
  65. #pragma segment fwodutil
  66. #endif
  67.  
  68. //========================================================================================
  69. //    FW_PrivODRelease
  70. //========================================================================================
  71.  
  72. static void FW_PrivODRelease(ODRefCntObject* object)
  73. {
  74. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  75.     if (object)
  76.         object->Release(somGetGlobalEnvironment());
  77. #endif
  78. }
  79.  
  80. //========================================================================================
  81. //    FW_PrivAssignAndAcquire
  82. //========================================================================================
  83.  
  84. static void FW_PrivAssignAndAcquire(ODRefCntObject* oldObject, ODRefCntObject* newObject)
  85. {
  86. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  87.     if (oldObject != newObject)
  88.     {
  89.         Environment* ev = somGetGlobalEnvironment();
  90.         
  91.         if (oldObject != NULL)
  92.             oldObject->Release(ev);
  93.  
  94.         newObject->Acquire(ev);
  95.     }
  96. #endif
  97. }
  98.  
  99. //========================================================================================
  100. //    FW_PrivAssign
  101. //========================================================================================
  102.  
  103. static void FW_PrivAssign(ODRefCntObject* oldObject, ODRefCntObject* newObject)
  104. {
  105. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  106.     if (oldObject != NULL && oldObject != newObject)
  107.     {
  108.         oldObject->Release(somGetGlobalEnvironment());
  109.     }
  110. #endif
  111. }
  112.  
  113. //========================================================================================
  114. //    FW_CAcquiredODWindow::FW_CAcquiredODWindow
  115. //========================================================================================
  116.  
  117. //----------------------------------------------------------------------------------------
  118. // FW_CAcquiredODWindow::FW_CAcquiredODWindow
  119. //----------------------------------------------------------------------------------------
  120.  
  121. FW_CAcquiredODWindow::FW_CAcquiredODWindow() :
  122.     fODWindow(NULL)
  123. {
  124.     // Is Acquire() missing here?
  125.     // As Jim Lloyd wrote in a mail message on Oct 5, 1995
  126.     //    No, the logic is that the object has already been acquired once, and 
  127.     //    the helper object is just used to ensure the object will be released.  
  128.     //    We were talking about this just today, and agreed that the FW_CAcquiredXXX 
  129.     //    classes should be renamed to FW_CXXXReleaser.
  130.     //
  131.     //    Note that the reason for the asymmetry is beyond our control, and has to do 
  132.     //    with thread safety.  The function to "get" an object must increment the 
  133.     //    reference count in the same operation.  If the get and the acquire are separate, 
  134.     //    it's possible that another thread might release the object before the acquisition 
  135.     //    happens.
  136.     //
  137.     //        Jim
  138.     FW_END_CONSTRUCTOR
  139. }
  140.  
  141. //----------------------------------------------------------------------------------------
  142. // FW_CAcquiredODWindow::FW_CAcquiredODWindow
  143. //----------------------------------------------------------------------------------------
  144.  
  145. FW_CAcquiredODWindow::FW_CAcquiredODWindow(ODWindow* odWindow) :
  146.     fODWindow(odWindow)
  147. {
  148.     FW_END_CONSTRUCTOR
  149. }
  150.  
  151. //----------------------------------------------------------------------------------------
  152. // FW_CAcquiredODWindow::FW_CAcquiredODWindow
  153. //----------------------------------------------------------------------------------------
  154.  
  155. FW_CAcquiredODWindow::FW_CAcquiredODWindow(const FW_CAcquiredODWindow& other) :
  156.     fODWindow(other.fODWindow)
  157. {
  158. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  159.     fODWindow->Acquire(somGetGlobalEnvironment());
  160. #endif
  161.     FW_END_CONSTRUCTOR
  162. }
  163.  
  164. //----------------------------------------------------------------------------------------
  165. // FW_CAcquiredODWindow::~FW_CAcquiredODWindow
  166. //----------------------------------------------------------------------------------------
  167.  
  168. FW_CAcquiredODWindow::~FW_CAcquiredODWindow()
  169. {
  170.     FW_START_DESTRUCTOR
  171.     ::FW_PrivODRelease(fODWindow);
  172. }
  173.  
  174. //----------------------------------------------------------------------------------------
  175. // FW_CAcquiredODWindow::operator=
  176. //----------------------------------------------------------------------------------------
  177.  
  178. FW_CAcquiredODWindow& FW_CAcquiredODWindow::operator=(ODWindow* odWindow)
  179. {
  180.     FW_PrivAssign(fODWindow, odWindow);
  181.     fODWindow = odWindow;
  182.     
  183.     return *this;    
  184. }
  185.  
  186. //----------------------------------------------------------------------------------------
  187. // FW_CAcquiredODWindow::operator=
  188. //----------------------------------------------------------------------------------------
  189.  
  190. FW_CAcquiredODWindow& FW_CAcquiredODWindow::operator=(const FW_CAcquiredODWindow& other)
  191. {
  192.     FW_PrivAssignAndAcquire(fODWindow, other.fODWindow);
  193.     fODWindow = other.fODWindow;
  194.     return *this;    
  195. }
  196.  
  197. //========================================================================================
  198. //    FW_CAcquiredODStorageUnit::FW_CAcquiredODStorageUnit
  199. //========================================================================================
  200.  
  201. //----------------------------------------------------------------------------------------
  202. // FW_CAcquiredODStorageUnit::FW_CAcquiredODStorageUnit
  203. //----------------------------------------------------------------------------------------
  204.  
  205. FW_CAcquiredODStorageUnit::FW_CAcquiredODStorageUnit() :
  206.     fODStorageUnit(NULL)
  207. {
  208.     FW_END_CONSTRUCTOR
  209. }
  210.  
  211. //----------------------------------------------------------------------------------------
  212. // FW_CAcquiredODStorageUnit::FW_CAcquiredODStorageUnit
  213. //----------------------------------------------------------------------------------------
  214.  
  215. FW_CAcquiredODStorageUnit::FW_CAcquiredODStorageUnit(ODStorageUnit* storageUnit) :
  216.     fODStorageUnit(storageUnit)
  217. {
  218.     FW_END_CONSTRUCTOR
  219. }
  220.  
  221. //----------------------------------------------------------------------------------------
  222. // FW_CAcquiredODStorageUnit::FW_CAcquiredODStorageUnit
  223. //----------------------------------------------------------------------------------------
  224.  
  225. FW_CAcquiredODStorageUnit::FW_CAcquiredODStorageUnit(const FW_CAcquiredODStorageUnit& other) :
  226.     fODStorageUnit(other.fODStorageUnit)
  227. {
  228. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  229.     fODStorageUnit->Acquire(somGetGlobalEnvironment());
  230. #endif
  231.     FW_END_CONSTRUCTOR
  232. }
  233.  
  234. //----------------------------------------------------------------------------------------
  235. // FW_CAcquiredODStorageUnit::~FW_CAcquiredODStorageUnit
  236. //----------------------------------------------------------------------------------------
  237.  
  238. FW_CAcquiredODStorageUnit::~FW_CAcquiredODStorageUnit()
  239. {
  240.     FW_START_DESTRUCTOR
  241.     
  242.     ::FW_PrivODRelease(fODStorageUnit);
  243. }
  244.  
  245. //----------------------------------------------------------------------------------------
  246. // FW_CAcquiredODStorageUnit::operator=
  247. //----------------------------------------------------------------------------------------
  248.  
  249. FW_CAcquiredODStorageUnit& FW_CAcquiredODStorageUnit::operator=(ODStorageUnit* storageUnit)
  250. {
  251.     FW_PrivAssign(fODStorageUnit, storageUnit);
  252.     fODStorageUnit = storageUnit;
  253.     return *this;    
  254. }
  255.  
  256. //----------------------------------------------------------------------------------------
  257. // FW_CAcquiredODStorageUnit::operator=
  258. //----------------------------------------------------------------------------------------
  259.  
  260. FW_CAcquiredODStorageUnit& FW_CAcquiredODStorageUnit::operator=(const FW_CAcquiredODStorageUnit& other)
  261. {
  262.     FW_PrivAssignAndAcquire(fODStorageUnit, other.fODStorageUnit);
  263.     fODStorageUnit = other.fODStorageUnit;
  264.     return *this;    
  265. }
  266.  
  267. //========================================================================================
  268. //    FW_CAcquiredODFrame::FW_CAcquiredODFrame
  269. //========================================================================================
  270.  
  271. //----------------------------------------------------------------------------------------
  272. // FW_CAcquiredODFrame::FW_CAcquiredODFrame
  273. //----------------------------------------------------------------------------------------
  274.  
  275. FW_CAcquiredODFrame::FW_CAcquiredODFrame() :
  276.     fODFrame(NULL)
  277. {
  278.     FW_END_CONSTRUCTOR
  279. }
  280.  
  281. //----------------------------------------------------------------------------------------
  282. // FW_CAcquiredODFrame::FW_CAcquiredODFrame
  283. //----------------------------------------------------------------------------------------
  284.  
  285. FW_CAcquiredODFrame::FW_CAcquiredODFrame(ODFrame* odFrame) :
  286.     fODFrame(odFrame)
  287. {
  288.     FW_END_CONSTRUCTOR
  289. }
  290.  
  291. //----------------------------------------------------------------------------------------
  292. // FW_CAcquiredODFrame::FW_CAcquiredODFrame
  293. //----------------------------------------------------------------------------------------
  294.  
  295. FW_CAcquiredODFrame::FW_CAcquiredODFrame(const FW_CAcquiredODFrame& other) :
  296.     fODFrame(other.fODFrame)
  297. {
  298. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  299.     fODFrame->Acquire(somGetGlobalEnvironment());
  300. #endif
  301.     FW_END_CONSTRUCTOR
  302. }
  303.  
  304. //----------------------------------------------------------------------------------------
  305. // FW_CAcquiredODFrame::~FW_CAcquiredODFrame
  306. //----------------------------------------------------------------------------------------
  307.  
  308. FW_CAcquiredODFrame::~FW_CAcquiredODFrame()
  309. {
  310.     FW_START_DESTRUCTOR
  311.     
  312.     ::FW_PrivODRelease(fODFrame);
  313. }
  314.  
  315. //----------------------------------------------------------------------------------------
  316. // FW_CAcquiredODFrame::operator=
  317. //----------------------------------------------------------------------------------------
  318.  
  319. FW_CAcquiredODFrame& FW_CAcquiredODFrame::operator=(ODFrame* odFrame)
  320. {
  321.     FW_PrivAssign(fODFrame, odFrame);
  322.     fODFrame = odFrame;
  323.     return *this;    
  324. }
  325.  
  326. //----------------------------------------------------------------------------------------
  327. // FW_CAcquiredODFrame::operator=
  328. //----------------------------------------------------------------------------------------
  329.  
  330. FW_CAcquiredODFrame& FW_CAcquiredODFrame::operator=(const FW_CAcquiredODFrame& other)
  331. {
  332.     FW_PrivAssignAndAcquire(fODFrame, other.fODFrame);
  333.     fODFrame = other.fODFrame;
  334.     return *this;    
  335. }
  336.  
  337. //========================================================================================
  338. //    FW_CAcquiredODPart::FW_CAcquiredODPart
  339. //========================================================================================
  340.  
  341. //----------------------------------------------------------------------------------------
  342. // FW_CAcquiredODPart::FW_CAcquiredODPart
  343. //----------------------------------------------------------------------------------------
  344.  
  345. FW_CAcquiredODPart::FW_CAcquiredODPart() :
  346.     fODPart(NULL)
  347. {
  348.     FW_END_CONSTRUCTOR
  349. }
  350.  
  351. //----------------------------------------------------------------------------------------
  352. // FW_CAcquiredODPart::FW_CAcquiredODPart
  353. //----------------------------------------------------------------------------------------
  354.  
  355. FW_CAcquiredODPart::FW_CAcquiredODPart(ODPart* odPart) :
  356.     fODPart(odPart)
  357. {
  358.     FW_END_CONSTRUCTOR
  359. }
  360.  
  361. //----------------------------------------------------------------------------------------
  362. // FW_CAcquiredODPart::FW_CAcquiredODPart
  363. //----------------------------------------------------------------------------------------
  364.  
  365. FW_CAcquiredODPart::FW_CAcquiredODPart(const FW_CAcquiredODPart& other) :
  366.     fODPart(other.fODPart)
  367. {
  368. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  369.     fODPart->Acquire(somGetGlobalEnvironment());
  370. #endif
  371.     FW_END_CONSTRUCTOR
  372. }
  373.  
  374. //----------------------------------------------------------------------------------------
  375. // FW_CAcquiredODPart::~FW_CAcquiredODPart
  376. //----------------------------------------------------------------------------------------
  377.  
  378. FW_CAcquiredODPart::~FW_CAcquiredODPart()
  379. {
  380.     FW_START_DESTRUCTOR
  381.     
  382.     ::FW_PrivODRelease(fODPart);
  383. }
  384.  
  385. //----------------------------------------------------------------------------------------
  386. // FW_CAcquiredODPart::operator=
  387. //----------------------------------------------------------------------------------------
  388.  
  389. FW_CAcquiredODPart& FW_CAcquiredODPart::operator=(ODPart* odPart)
  390. {
  391.     FW_PrivAssign(fODPart, odPart);
  392.     fODPart = odPart;
  393.     return *this;    
  394. }
  395.  
  396. //----------------------------------------------------------------------------------------
  397. // FW_CAcquiredODPart::operator=
  398. //----------------------------------------------------------------------------------------
  399.  
  400. FW_CAcquiredODPart& FW_CAcquiredODPart::operator=(const FW_CAcquiredODPart& other)
  401. {
  402.     FW_PrivAssignAndAcquire(fODPart, other.fODPart);
  403.     fODPart = other.fODPart;
  404.     return *this;    
  405. }
  406.  
  407. //========================================================================================
  408. //    Class FW_CAcquiredODShape
  409. //========================================================================================
  410.  
  411. //----------------------------------------------------------------------------------------
  412. // FW_CAcquiredODShape::FW_CAcquiredODShape
  413. //----------------------------------------------------------------------------------------
  414.  
  415. FW_CAcquiredODShape::FW_CAcquiredODShape() :
  416.     fODShape(NULL)
  417. {
  418.     FW_END_CONSTRUCTOR
  419. }
  420.  
  421. //----------------------------------------------------------------------------------------
  422. // FW_CAcquiredODShape::FW_CAcquiredODShape
  423. //----------------------------------------------------------------------------------------
  424.  
  425. FW_CAcquiredODShape::FW_CAcquiredODShape(ODShape* odShape) :
  426.     fODShape(odShape)
  427. {
  428.     FW_END_CONSTRUCTOR
  429. }
  430.  
  431. //----------------------------------------------------------------------------------------
  432. // FW_CAcquiredODShape::FW_CAcquiredODShape
  433. //----------------------------------------------------------------------------------------
  434.  
  435. FW_CAcquiredODShape::FW_CAcquiredODShape(const FW_CAcquiredODShape& other) :
  436.     fODShape(other.fODShape)
  437. {
  438. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  439.     fODShape->Acquire(somGetGlobalEnvironment());
  440. #endif
  441.     FW_END_CONSTRUCTOR
  442. }
  443.  
  444. //----------------------------------------------------------------------------------------
  445. // FW_CAcquiredODShape::~FW_CAcquiredODShape
  446. //----------------------------------------------------------------------------------------
  447.  
  448. FW_CAcquiredODShape::~FW_CAcquiredODShape()
  449. {
  450.     FW_START_DESTRUCTOR
  451.     
  452.     ::FW_PrivODRelease(fODShape);
  453. }
  454.  
  455. //----------------------------------------------------------------------------------------
  456. // FW_CAcquiredODShape::operator=
  457. //----------------------------------------------------------------------------------------
  458.  
  459. FW_CAcquiredODShape& FW_CAcquiredODShape::operator=(ODShape* odShape)
  460. {
  461.     FW_PrivAssign(fODShape, odShape);
  462.     fODShape = odShape;
  463.     return *this;    
  464. }
  465.  
  466. //----------------------------------------------------------------------------------------
  467. // FW_CAcquiredODShape::operator=
  468. //----------------------------------------------------------------------------------------
  469.  
  470. FW_CAcquiredODShape& FW_CAcquiredODShape::operator=(const FW_CAcquiredODShape& other)
  471. {
  472.     FW_PrivAssignAndAcquire(fODShape, other.fODShape);
  473.     fODShape = other.fODShape;
  474.     return *this;    
  475. }
  476.  
  477. //========================================================================================
  478. //    Class FW_CAcquiredODTransform
  479. //========================================================================================
  480.  
  481. //----------------------------------------------------------------------------------------
  482. // FW_CAcquiredODTransform::FW_CAcquiredODTransform
  483. //----------------------------------------------------------------------------------------
  484.  
  485. FW_CAcquiredODTransform::FW_CAcquiredODTransform() :
  486.     fODTransform(NULL)
  487. {
  488.     FW_END_CONSTRUCTOR
  489. }
  490.  
  491. //----------------------------------------------------------------------------------------
  492. // FW_CAcquiredODTransform::FW_CAcquiredODTransform
  493. //----------------------------------------------------------------------------------------
  494.  
  495. FW_CAcquiredODTransform::FW_CAcquiredODTransform(ODTransform* odTransform) :
  496.     fODTransform(odTransform)
  497. {
  498.     FW_END_CONSTRUCTOR
  499. }
  500.  
  501. //----------------------------------------------------------------------------------------
  502. // FW_CAcquiredODTransform::FW_CAcquiredODTransform
  503. //----------------------------------------------------------------------------------------
  504.  
  505. FW_CAcquiredODTransform::FW_CAcquiredODTransform(const FW_CAcquiredODTransform& other) :
  506.     fODTransform(other.fODTransform)
  507. {
  508. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  509.     fODTransform->Acquire(somGetGlobalEnvironment());
  510. #endif
  511.     FW_END_CONSTRUCTOR
  512. }
  513.  
  514. //----------------------------------------------------------------------------------------
  515. // FW_CAcquiredODTransform::~FW_CAcquiredODTransform
  516. //----------------------------------------------------------------------------------------
  517.  
  518. FW_CAcquiredODTransform::~FW_CAcquiredODTransform()
  519. {
  520.     FW_START_DESTRUCTOR
  521.     
  522.     ::FW_PrivODRelease(fODTransform);
  523. }
  524.  
  525. //----------------------------------------------------------------------------------------
  526. // FW_CAcquiredODTransform::operator=
  527. //----------------------------------------------------------------------------------------
  528.  
  529. FW_CAcquiredODTransform& FW_CAcquiredODTransform::operator=(ODTransform* odTransform)
  530. {
  531.     FW_PrivAssign(fODTransform, odTransform);
  532.     fODTransform = odTransform;
  533.     return *this;    
  534. }
  535.  
  536. //----------------------------------------------------------------------------------------
  537. // FW_CAcquiredODTransform::operator=
  538. //----------------------------------------------------------------------------------------
  539.  
  540. FW_CAcquiredODTransform& FW_CAcquiredODTransform::operator=(const FW_CAcquiredODTransform& other)
  541. {
  542.     FW_PrivAssignAndAcquire(fODTransform, other.fODTransform);
  543.     fODTransform = other.fODTransform;
  544.     return *this;    
  545. }
  546.  
  547. //========================================================================================
  548. //    Class FW_CAcquiredODMenuBar
  549. //========================================================================================
  550.  
  551. //----------------------------------------------------------------------------------------
  552. // FW_CAcquiredODMenuBar::FW_CAcquiredODMenuBar
  553. //----------------------------------------------------------------------------------------
  554.  
  555. FW_CAcquiredODMenuBar::FW_CAcquiredODMenuBar() :
  556.     fODMenuBar(NULL)
  557. {
  558.     FW_END_CONSTRUCTOR
  559. }
  560.  
  561. //----------------------------------------------------------------------------------------
  562. // FW_CAcquiredODMenuBar::FW_CAcquiredODMenuBar
  563. //----------------------------------------------------------------------------------------
  564.  
  565. FW_CAcquiredODMenuBar::FW_CAcquiredODMenuBar(ODMenuBar* odMenuBar) :
  566.     fODMenuBar(odMenuBar)
  567. {
  568.     FW_END_CONSTRUCTOR
  569. }
  570.  
  571. //----------------------------------------------------------------------------------------
  572. // FW_CAcquiredODMenuBar::FW_CAcquiredODMenuBar
  573. //----------------------------------------------------------------------------------------
  574.  
  575. FW_CAcquiredODMenuBar::FW_CAcquiredODMenuBar(const FW_CAcquiredODMenuBar& other) :
  576.     fODMenuBar(other.fODMenuBar)
  577. {
  578. #if FW_OPENDOC_VERSION >= FW_OPENDOC_DR3
  579.     fODMenuBar->Acquire(somGetGlobalEnvironment());
  580. #endif
  581.     FW_END_CONSTRUCTOR
  582. }
  583.  
  584. //----------------------------------------------------------------------------------------
  585. // FW_CAcquiredODMenuBar::~FW_CAcquiredODMenuBar
  586. //----------------------------------------------------------------------------------------
  587.  
  588. FW_CAcquiredODMenuBar::~FW_CAcquiredODMenuBar()
  589. {
  590.     FW_START_DESTRUCTOR
  591.     
  592.     ::FW_PrivODRelease(fODMenuBar);
  593. }
  594.  
  595. //----------------------------------------------------------------------------------------
  596. // FW_CAcquiredODMenuBar::operator=
  597. //----------------------------------------------------------------------------------------
  598.  
  599. FW_CAcquiredODMenuBar& FW_CAcquiredODMenuBar::operator=(ODMenuBar* odMenuBar)
  600. {
  601.     FW_PrivAssign(fODMenuBar, odMenuBar);
  602.     fODMenuBar = odMenuBar;
  603.     return *this;    
  604. }
  605.  
  606. //----------------------------------------------------------------------------------------
  607. // FW_CAcquiredODMenuBar::operator=
  608. //----------------------------------------------------------------------------------------
  609.  
  610. FW_CAcquiredODMenuBar& FW_CAcquiredODMenuBar::operator=(const FW_CAcquiredODMenuBar& other)
  611. {
  612.     FW_PrivAssignAndAcquire(fODMenuBar, other.fODMenuBar);
  613.     fODMenuBar = other.fODMenuBar;
  614.     return *this;    
  615. }
  616.  
  617. //========================================================================================
  618. //    class FW_CAcquireODStorageUnitView
  619. //========================================================================================
  620.  
  621. //----------------------------------------------------------------------------------------
  622. // FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView
  623. //----------------------------------------------------------------------------------------
  624.  
  625. FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView(Environment* ev, ODStorageUnit* su, 
  626.                                                             ODPropertyName propertyName, 
  627.                                                             ODPositionCode propertyPosCode, 
  628.                                                             ODValueType valueType, 
  629.                                                             ODValueIndex valueIndex, 
  630.                                                             ODPositionCode valuePosCode) :
  631.     fSUView(NULL)
  632. {
  633.     su->Focus(ev, propertyName, propertyPosCode, valueType, valueIndex, valuePosCode);
  634.     fSUView = su->CreateView(ev);
  635. }
  636.  
  637. //----------------------------------------------------------------------------------------
  638. // FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView
  639. //----------------------------------------------------------------------------------------
  640.  
  641. FW_CAcquireODStorageUnitView::FW_CAcquireODStorageUnitView(Environment* ev, ODStorageUnit* su) :
  642.     fSUView(NULL)
  643. {
  644.     fSUView = su->CreateView(ev);
  645. }
  646.  
  647. //----------------------------------------------------------------------------------------
  648. // FW_CAcquireODStorageUnitView::~FW_CAcquireODStorageUnitView
  649. //----------------------------------------------------------------------------------------
  650.  
  651. FW_CAcquireODStorageUnitView::~FW_CAcquireODStorageUnitView()
  652. {
  653.     delete fSUView;
  654. }
  655.  
  656. //========================================================================================
  657. //    class FW_CAcquireODPropertyName
  658. //========================================================================================
  659.  
  660. //----------------------------------------------------------------------------------------
  661. // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
  662. //----------------------------------------------------------------------------------------
  663.  
  664. FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnit* su) :
  665.     fPropName(NULL)
  666. {
  667.     fPropName = su->GetProperty(ev);
  668. }
  669.  
  670. //----------------------------------------------------------------------------------------
  671. // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
  672. //----------------------------------------------------------------------------------------
  673.  
  674. FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitView* suView) :
  675.     fPropName(NULL)
  676. {
  677.     fPropName = suView->GetProperty(ev);
  678. }
  679.  
  680. //----------------------------------------------------------------------------------------
  681. // FW_CAcquireODPropertyName::FW_CAcquireODPropertyName
  682. //----------------------------------------------------------------------------------------
  683.  
  684. FW_CAcquireODPropertyName::FW_CAcquireODPropertyName(Environment* ev, ODStorageUnitCursor* suCursor) :
  685.     fPropName(NULL)
  686. {
  687.     suCursor->GetProperty(ev, &fPropName);
  688. }
  689.  
  690. //----------------------------------------------------------------------------------------
  691. // FW_CAcquireODPropertyName::~FW_CAcquireODPropertyName
  692. //----------------------------------------------------------------------------------------
  693.  
  694. FW_CAcquireODPropertyName::~FW_CAcquireODPropertyName()
  695. {
  696.     if (fPropName != NULL)
  697.         FW_CMemoryManager::FreeBlock(fPropName);
  698. }
  699.  
  700. //========================================================================================
  701. //    FW_CopyAndRelease
  702. //========================================================================================
  703.  
  704. //########################################################################################
  705. // SCpp Hack
  706. // Work around SCpp 8.0.3 bug - importing overloaded functions doesn't work.
  707. // Replace overloaded functions with normal functions with different names.
  708. // Use inline overloaded functions which turn around and call the renamed
  709. // functions so client code isn't affected.
  710. //########################################################################################
  711.  
  712. //----------------------------------------------------------------------------------------
  713. // ODShape
  714. //----------------------------------------------------------------------------------------
  715.  
  716. FW_FUNC_ATTR ODShape* FW_CopyAndRelease_Shape(Environment* ev, ODShape* shapeToCopy)
  717. {
  718.     FW_ASSERT(shapeToCopy != NULL);
  719.     FW_ASSERT(shapeToCopy->GetRefCount(ev) >= 1);
  720.     
  721.     FW_CAcquiredODShape aqShapeToCopy(shapeToCopy); 
  722.     return aqShapeToCopy->Copy(ev);
  723. }
  724.  
  725. //----------------------------------------------------------------------------------------
  726. // ODTransform
  727. //----------------------------------------------------------------------------------------
  728.  
  729. FW_FUNC_ATTR ODTransform* FW_CopyAndRelease_Transform(Environment* ev, ODTransform* transformToCopy)
  730. {
  731.     FW_ASSERT(transformToCopy != NULL);
  732.     FW_ASSERT(transformToCopy->GetRefCount(ev) >= 1);
  733.     
  734.     FW_CAcquiredODTransform aqTransformToCopy(transformToCopy); 
  735.     return transformToCopy->Copy(ev);
  736. }
  737.